
// 'xxx: number' 表示声明一个number类型
const num = 123;

// 声明一个函数的参数类型(number以及any)和返回值(void)
function fn (arg1: number, arg2: any): void {
  // todo
}
fn(num, [1,2,3,4]);

// 声明一个接口
interface IPerson {
  name: string; // IPerson需要包含一个name属性，类型是string
  age: number; // IPerson需要包含一个age属性，类型是number
  family: Array<string>; // IPerson需要包含一个family属性，类型是数组，数组里面都是string类型的数据
  sex?: `男` | `女`; // IPerson可选一个sex属性，值为'男'或者'女'或者undefined
}
// 使用IPerson接口定义一个对象，如果对象不符合IPerson的定义，编译器会飘红报错
const person: IPerson = {
  name: `小王`,
  age: 12,
  family: [`爹`, `娘`],
};

// type类似interface，以下写法等同用interface声明IPerson
interface IPerson2 {
  name: string;
  age: number;
  family: Array<string>;
  sex?: `男` | `女`;
}
// 因此可以直接定义过来
const person2: IPerson2 = person;
